home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / wtek0693.zip / OOPALLEY.ZIP / NIL.CPP < prev    next >
C/C++ Source or Header  |  1993-04-27  |  2KB  |  39 lines

  1. #include "object.h"
  2.  
  3. extern const Class class_Nil;
  4.  
  5. class Nil : public Object {
  6. public: 
  7.     Nil() {}
  8.     virtual int         compare(const Object&)  const;  // compare objects
  9.     virtual Object*     copy()                  const;  // copy returns nil
  10.     virtual Object*     deepCopy()              const;  // copy returns nil
  11.     virtual unsigned    hash()                  const;  // calculate object hash
  12.     virtual const       Class* isA()            const;
  13.     virtual bool        isEqual(const Object&)  const;  // equality test
  14.     virtual void        printOn(ostream& strm)  const;
  15.     virtual Object*     shallowCopy()           const;  // copy returns nil
  16. };
  17.  
  18. #define THIS    Nil
  19. #define BASE    Object
  20. DEFINE_CLASS(Nil,Object);
  21.  
  22.  
  23. static const Nil nil_object;                            // the nil object 
  24. extern const Object* const nil = (Object*)&nil_object;  // pointer to the nil object 
  25.                          
  26.  
  27. bool        Nil::isEqual(const Object& ob) const        {   return (&ob==nil); }
  28. unsigned    Nil::hash() const                           { return 0; }
  29. int         Nil::compare(const Object& ob) const
  30.             {
  31.                 assertArgSpecies(ob,class_Nil,"compare");
  32.                 return 0;
  33.             }
  34. Object*     Nil::copy() const                           { return (Object*) nil; }
  35. Object*     Nil::shallowCopy() const                    { return (Object*) nil; }
  36. Object*     Nil::deepCopy() const                       { return (Object*) nil; }
  37. void        Nil::printOn(ostream& strm) const           { strm << "NIL"; }
  38.  
  39.